home *** CD-ROM | disk | FTP | other *** search
- SUBROUTINE BINSRC(KELEM,KLIST,NLIST,IPOS,LAST)
- *-----------------------------------------------------------------------
- *
- *---Purpose: finds number in sorted list (ascending)
- * with binary search.
- *
- *---Input
- * KELEM number to be looked up
- * KLIST table
- * NLIST length of table
- *
- *---Output
- * IPOS = 0: name not in table
- * > 0: position in table
- * LAST for IPOS=0, position behind which number belongs
- *
- *---Author : HG date: 17.5.79 last revision: 20.6.84
- *
- *-----------------------------------------------------------------------
- DIMENSION KLIST(*)
- IPOS=0
- LAST=0
- N=NLIST
- IF(N.GT.0) THEN
- KPOS=0
- 10 M=(N+1)/2
- LAST=KPOS+M
- IF (KELEM.LT.KLIST(LAST)) THEN
- N=M
- LAST=LAST-1
- IF (N.GT.1) GOTO 10
- ELSEIF (KELEM.GT.KLIST(LAST)) THEN
- KPOS=LAST
- N=N-M
- IF (N.GT.0) GOTO 10
- ELSE
- IPOS=LAST
- ENDIF
- ENDIF
- END
-